package com.sumainfor.pc.market.dao;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author PuaChen
 * @Create 2019-05-14 14:33
 */
public interface MarketDataMapper {

    /**
     * 查询新增房源套
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    int selectHousing(@Param("deptId") Integer deptId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询新增房源 间数
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @param state     房源状态
     *                  房源状态（0 待上架 1可签约 2已签约）
     *                  -1: 再租房源所有状态
     *                  -2: 可预销房源
     * @return
     */
    int selectHousingInfoCount(@Param("deptId") Integer deptId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("state") Integer state);

    /**
     * 查询再跟客户数量
     *
     * @param userIds
     * @param startTime
     * @param endTime
     * @return
     */
    int selectWorderCount(@Param("userIds") List<Integer> userIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询所有的销售的编号
     *
     * @param startTime
     * @param endTime
     * @return
     */
    List<Integer> selectAllWorderUserIds(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询成交数
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    int selectFixtureNumber(@Param("deptId") Integer deptId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询新收的数量
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    int selectNewOwnerPactCount(@Param("deptId") Integer deptId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询平均租金
     *
     * @param deptId
     * @param startTime
     * @param endTime
     * @return
     */
    String selectAvgMoney(@Param("deptId") Integer deptId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    ///////////////////////////////////////////////////////////////////////////
    // 表格数据
    ///////////////////////////////////////////////////////////////////////////

    /**
     * 查询 新增房源 套
     *
     * @param page
     * @param miId
     * @param startTime
     * @param endTime
     * @return
     */
    IPage<Map<String, Object>> selectHousingForSubTable(Page page, @Param("miId") Integer miId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询 新增房源 间
     *
     * @param page
     * @param miId
     * @param startTime
     * @param endTime
     * @param state
     * @return
     */
    IPage<Map<String, Object>> selectHousingInfoForSubTable(Page page, @Param("miId") Integer miId, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("state") Integer state);


    /**
     * 查询再跟客户
     *
     * @param page
     * @param userIds
     * @param startTime
     * @param endTime
     * @return
     */
    IPage<Map<String, Object>> selectWorderDataForSubTable(Page page, @Param("userIds") List<Integer> userIds, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询成交数
     *
     * @param page
     * @param miId
     * @param startTime
     * @param endTime
     * @return
     */
    IPage<Map<String, Object>> selectFixtureForSubTable(Page page, @Param("miId") Integer miId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询新收
     *
     * @param page
     * @param miId
     * @param startTime
     * @param endTime
     * @return
     */
    IPage<Map<String, Object>> selectNewOwnerPactForSubTable(Page page, @Param("miId") Integer miId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询中心平均租金
     *
     * @param page
     * @param miId
     * @param startTime
     * @param endTime
     * @return
     */
    IPage<Map<String, Object>> selectAvgMoneyForSubTable(Page page, @Param("miId") Integer miId, @Param("startTime") String startTime, @Param("endTime") String endTime);
}
